package com.csi.bumblebee.mapper;

import com.csi.bumblebee.domain.user.Resume;
import com.csi.bumblebee.domain.user.Student;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Student表
 *
 * @author HUOJT yeebs(条件检索学生)
 */
public interface StudentMapper {

    /**
     * 学生注册
     *
     * @param student 注册信息
     * @return 影响行数
     */
    int insertStudent(Student student);

    /**
     * 按id物理删除学生
     *
     * @param id 学生id
     * @return 影响行数
     */
    int deleteByStudentId(String id);

    /**
     * 更新学生数据
     *
     * @param student 更新学生
     * @return 影响行数
     */
    int updateStudent(Student student);

    /**
     * 更新学生账号状态
     *
     * @param student 更新学生
     * @return 影响行数
     */
    int updateStudentStatus(Student student);

    /**
     * 学生登录（根据username和password查询）
     *
     * @param student 装载username和password的学生对象
     * @return 学生对象
     */
    Student findByUsernamePassword(Student student);

    /**
     * 查询student的基本业务信息
     *
     * @param student 学生
     * @return student列表
     */
    List<Student> listInfo(Student student);

    /**
     * 查询指定id的学生
     *
     * @param id 学生id
     * @return 学生对象
     */
    Student findByStudentId(String id);

    /**
     * 学查询生有多少偏好岗位
     *
     * @param id 学生id
     * @return 偏好岗位个数
     */
    int hasJobType(String id);

    /**
     * 查询学生参加指定岗位的测试的次数
     *
     * @param student 学生对象
     * @return 学生参加指定岗位的测试的次数
     */
    int countJobExam(Student student);

    /**
     * 查询学生用户账号个人信息
     * @param id 学生Id
     * @return 学生对象
     */
    Student findById(String id);

    /**
     * 删除一个学生账号
     * @param id 主键Id
     * @return 影响行数
     */
    int delete(String id);

    /**
     * 展示所有封禁的账号
     * @return List<Student>
     */
    List<Student> listStudentBlackAccount();

    /**
     * 解封账号
     * @param id 学生主键Id
     * @return 影响行数
     */
    int releaseAccount(String id);

    /**
     * 展示所有已注销的账号
     * @return List<Student>
     */
    List<Student> listCanceledAccount();

    /**
     * 后台注销账号
     * @param id 主键Id
     * @return 影响行数
     */
    int cancelAccount(String id);

    /**
     * 根据姓名查用户
     * @param username 用户名
     * @return Student对象
     */
    Student findByName(String username);

    /**
     * 展示所有的学生账号
     * @return List<Student>
     */
    List<Student> listStudentAccount();

    /**
     * 封禁学生账号
     * @param id 学生Id
     * @return 影响行数
     */
    int bStudentAccount(String id);


    //查询学生岗位偏好
    String findByIdJobType(String id);

}
